//package com.gss.common.exception.oauth;
//
//import com.gss.entity.R;
//import com.gss.entity.enums.ConstantEnum;
//import io.jsonwebtoken.ExpiredJwtException;
//import io.jsonwebtoken.MalformedJwtException;
//import io.jsonwebtoken.SignatureException;
//import io.jsonwebtoken.UnsupportedJwtException;
//import lombok.extern.slf4j.Slf4j;
//import org.springframework.context.support.DefaultMessageSourceResolvable;
//import org.springframework.security.access.AccessDeniedException;
//import org.springframework.web.bind.MethodArgumentNotValidException;
//import org.springframework.web.bind.annotation.ExceptionHandler;
//import org.springframework.web.bind.annotation.RestControllerAdvice;
//import org.springframework.web.client.ResourceAccessException;
//import org.springframework.web.servlet.NoHandlerFoundException;
//
//import java.net.ConnectException;
//import java.util.stream.Collectors;
//
///**
// * @ClassName GlobalExceptionHandler
// * @Description 全局处理自定义的业务异常
// * @Author zhaoxinguo
// * @Date 2021/11/26 15:59
// * @Version 1.0
// */
//@RestControllerAdvice
//@Slf4j
//public class GlobalExceptionHandler {
//
//    @ExceptionHandler(NoHandlerFoundException.class)
//    public R<String> handlerNoFoundException(Exception e) {
//        log.error(e.getMessage(), e);
//        return R.error(ConstantEnum.NOT_FOUND);
//    }
//
//    @ExceptionHandler(ConnectException.class)
//    public R<String> connectException(ConnectException e){
//        log.error(e.getMessage(), e);
//        return R.error(ConstantEnum.REQUEST_TIMEOUT);
//    }
//
//    @ExceptionHandler(ResourceAccessException.class)
//    public R<String> connectException(ResourceAccessException e){
//        log.error(e.getMessage(), e);
//        return R.error(ConstantEnum.RESOURCE_ACCESS);
//    }
//
//    @ExceptionHandler(AccessDeniedException.class)
//    public R<String> accessDeniedException(AccessDeniedException e) {
//        log.error(e.getMessage(), e);
//        return R.error(ConstantEnum.ACCESS_DENIED);
//    }
//
//    @ExceptionHandler(SignatureException.class)
//    public R<String> signatureException(SignatureException e) {
//        log.error(e.getMessage(), e);
//        return R.error(ConstantEnum.SIGNATURE_EX);
//    }
//
//    @ExceptionHandler(ExpiredJwtException.class)
//    public R<String> expiredJwtException(ExpiredJwtException e) {
//        log.error(e.getMessage(), e);
//        return R.error(ConstantEnum.EXPIRED_JWT);
//    }
//
//    @ExceptionHandler(UnsupportedJwtException.class)
//    public R<String> unsupportedJwtException(UnsupportedJwtException e) {
//        log.error(e.getMessage(), e);
//        return R.error(ConstantEnum.TOKEN_ERROR);
//    }
//
//    @ExceptionHandler(MalformedJwtException.class)
//    public R<String> MalformedJwtException(MalformedJwtException e) {
//        log.error(e.getMessage(), e);
//        return R.error(ConstantEnum.ACCESS_DENIED);
//    }
//
//    @ExceptionHandler(IllegalArgumentException.class)
//    public R<String> illegalArgumentException(IllegalArgumentException e) {
//        log.error(e.getMessage(), e);
//        return R.error(ConstantEnum.ILLEGAL_ARG);
//    }
//
//
//    @ExceptionHandler(MethodArgumentNotValidException.class)
//    public R<String> methodArgumentNotValidException(MethodArgumentNotValidException exception) {
//        log.info("捕获异常MethodArgumentNotValidException");
//        String message = exception.getBindingResult().getAllErrors().stream().map(DefaultMessageSourceResolvable::getDefaultMessage).collect(Collectors.joining());
//        return R.error(ConstantEnum.FAIL.getCode(),message);
//    }
//}
